package com.joker.demo.admin.domain.vo;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 环境监控统计信息VO
 *
 * @author : feixiang.li
 * @since : 2025-01-27 10:30
 */
@Data
public class EnvironmentMonitorStatisticsVO implements Serializable {

    /**
     * 执行器总数
     */
    private Integer totalExecutors;

    /**
     * 在线执行器数
     */
    private Integer onlineExecutors;

    /**
     * 离线执行器数
     */
    private Integer offlineExecutors;

    /**
     * 平均CPU使用率
     */
    private BigDecimal averageCpuUsage;

    /**
     * 平均系统内存使用率
     */
    private BigDecimal averageSystemMemoryUsage;

    /**
     * 平均JVM堆内存使用率
     */
    private BigDecimal averageHeapMemoryUsage;

    /**
     * 平均JVM线程数
     */
    private BigDecimal averageThreadCount;

    /**
     * 最高CPU使用率
     */
    private BigDecimal maxCpuUsage;

    /**
     * 最高系统内存使用率
     */
    private BigDecimal maxSystemMemoryUsage;

    /**
     * 最高JVM堆内存使用率
     */
    private BigDecimal maxHeapMemoryUsage;

    /**
     * 最高JVM线程数
     */
    private Integer maxThreadCount;

    /**
     * 最低CPU使用率
     */
    private BigDecimal minCpuUsage;

    /**
     * 最低系统内存使用率
     */
    private BigDecimal minSystemMemoryUsage;

    /**
     * 最低JVM堆内存使用率
     */
    private BigDecimal minHeapMemoryUsage;

    /**
     * 最低JVM线程数
     */
    private Integer minThreadCount;

    /**
     * 执行器统计列表
     */
    private List<ExecutorStatistics> executorStatistics;

    /**
     * 执行器统计信息
     */
    @Data
    public static class ExecutorStatistics implements Serializable {
        /**
         * 执行器注册键
         */
        private String registerKey;

        /**
         * 应用名称
         */
        private String appName;

        /**
         * 平均CPU使用率
         */
        private BigDecimal averageCpuUsage;

        /**
         * 平均系统内存使用率
         */
        private BigDecimal averageSystemMemoryUsage;

        /**
         * 平均JVM堆内存使用率
         */
        private BigDecimal averageHeapMemoryUsage;

        /**
         * 平均JVM线程数
         */
        private BigDecimal averageThreadCount;

        /**
         * 最高CPU使用率
         */
        private BigDecimal maxCpuUsage;

        /**
         * 最高系统内存使用率
         */
        private BigDecimal maxSystemMemoryUsage;

        /**
         * 最高JVM堆内存使用率
         */
        private BigDecimal maxHeapMemoryUsage;

        /**
         * 最高JVM线程数
         */
        private Integer maxThreadCount;

        /**
         * 监控数据条数
         */
        private Long dataCount;

        /**
         * 最后监控时间
         */
        private String lastMonitorTime;
    }
}
